1593:Alignment of Code

本文介绍了一种使用C++实现代码对齐的方法,通过读取输入并利用`stringstream`处理每一行的数据,最终实现各列间的对齐显示。文章包含完整的代码示例及运行流程说明。

Alignment of Code


#include<iostream>
#include<cstring>
#include<vector>
#include<algorithm>
#include<sstream>
using namespace std;
const int maxw = 180 + 5;
const int maxl = 1000 + 5;
int space[maxw];
vector<string>code[maxl];
void prspa(int t){
    while(t--) cout<<' ';
}
int main(){
    string line,s;
    int cnt = 0;
    while(getline(cin,line)){
        int cnt2 = 0;
        stringstream ss(line);
        while(ss >> s){
            code[cnt].push_back(s);
            space[cnt2] = max(space[cnt2],(int)s.length());
            cnt2++;
        }
        cnt++;
    }
    // 这样写老报错,还是用sstream吧。。。
    // while(true){
    //     int cnt2 = 0;
    //     while(cin>>s && s[0] != '\n'){
    //         code[cnt].push_back(s);
    //         space[cnt2] = max(space[cnt2],(int)s.length());
    //         cnt2++;
    //     }
    //     cnt++;
    //     if(!cnt2) break;
    // }
    for(int i = 0;i < cnt;i++){
        for(int j = 0;j < code[i].size()-1;j++){
            cout<<code[i][j];
            prspa(space[j]+1 - code[i][j].length());
        }
        cout<<code[i][code[i].size()-1]<<endl; //最后一列不能有空格
    }
    return 0;
}

转载于:https://www.cnblogs.com/JingwangLi/p/10202734.html

### Alignment Marker in Programming or Data Processing In the context of programming and data processing, alignment markers play an essential role in ensuring that data elements align correctly within memory structures or during file operations. These markers can refer to specific byte sequences used to ensure proper positioning of data blocks. For instance, when dealing with binary files or network protocols, alignment markers help synchronize reading and writing processes between different systems[^3]. Misaligned data could lead to incorrect interpretation of information, causing bugs or security vulnerabilities. #### Example Code Demonstrating Alignment Markers Usage When working with low-level languages like C++, developers often use pragmas or attributes to specify alignment requirements: ```cpp #include <iostream> #include <cstring> // Define structure with explicit alignment requirement #pragma pack(push, 1) struct AlignedData { char flag; int value; }; #pragma pack(pop) int main() { // Initialize aligned data block AlignedData data = {'A', 0xdeadbeef}; // Print out raw bytes representing struct content unsigned char* ptr = reinterpret_cast<unsigned char*>(&data); for (size_t i = 0; i < sizeof(data); ++i) { std::cout << "Byte[" << i << "]=" << static_cast<int>(ptr[i]) << "\n"; } return 0; } ``` This example demonstrates how one might define a custom-aligned structure using compiler directives. Properly setting up such alignments ensures efficient access patterns on certain hardware architectures while avoiding potential issues related to unaligned accesses.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值