在c++中逐行打印两个字符串的混合

Print mixed line by line of two strings in C++?

本文关键字:两个 字符串 混合 c++ 逐行 打印      更新时间:2023-10-16

我有两个字符串align_Aalign_B,它们有一些字符,我如何打印align_A的第一行,然后在下面(下一行)打印align_B的第一行,然后在下面打印align_A的第二行,在下一行打印align_B的第二行,等等。我使用这样的代码来插入可以位于行(80个字符)中的字符。

int len=align_A.length()/80;
... 

我不写延续代码,因为我正在工作,还没有准备好。这很复杂,有没有其他方法(这样的函数)来简单地执行这个动作?
注意:字符串变量中没有n这样的行说明符

使用std::字符串。有了它,您可以使用find()来查找下一个换行符。然后你可以使用substr()来分割字符串。

#include <iostream>
#include <string>
int main(){
    std::string str = "aasdasdasdanasdasdasdnasdasdasd";
    int index = str.find('n'); // Find position of newline
    std::cout << str.substr(0, index) << std::endl; // Print string until newline
    std::cout << str.substr(0, 10 ) << std::endl; // Print the first 80 charcters
}

我更喜欢char arraystdio:

#include <cstdio>
// #include <cstdlib>
#define SCREEN_SIZE_STR "80"
int main(){
    const char s1[] =
        "12345678901234567890123456789012345678901234567890123456789012345678901234567890"
        "12345678901234567890123456789012345678901234567890123456789012345678901234567890"
        "12345678901234567890123456789012345678901234567890123456789012345678901234567890"
        "12345678901234567890123456789012345678901234567890123456789012345678901234567890"
        "12345678901234567890123456789012345678901234567890123456789012345678901234567890";
    const char s2[] = 
        "abcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnop"
        "abcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnop"
        "abcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnop"
        "abcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnop"
        "abcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnop";
    int i1 = 0, i2 = 0;
    while(s1[i1] != '' && s2[i2] != ''){ // print both string
        i1 += printf("%."SCREEN_SIZE_STR"s", s1 + i1);
        i2 += printf("%."SCREEN_SIZE_STR"s", s2 + i2);
    }
    while(s1[i1] != '') // print the remaining of s1
        i1 += printf("%."SCREEN_SIZE_STR"s", s1 + i1);
    while(s2[i2] != '') // print the remaining of s2
        i2 += printf("%."SCREEN_SIZE_STR"s", s2 + i2);
    // system("pause");
    return 0;
}

如果你使用std::string:

const char *s1 = string1.c_str();
const char *s2 = string2.c_str();