1

私は2つの文字列align_Aalign_B持っていて、いくつかの文字を持っています。どのように最初の行を印刷align_Aし、次に下(次の行)に最初の行を印刷し、align_B次に下に2行目をalign_A印刷し、次の行に2行目を印刷align_Bします。行に配置できる文字(80文字)を挿入するようなコードを使用します。

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

私はそれに取り組んでいて準備ができていないので、継続コードを書きません。これは複雑です。このアクションを簡単に実行する別の方法 (そのような関数) はありますか?
注:文字列変数には\0またはなどの行指定子はありません。\n

4

2 に答える 2

1

私が好む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] != '\0' && s2[i2] != '\0'){ // print both string
        i1 += printf("%."SCREEN_SIZE_STR"s", s1 + i1);
        i2 += printf("%."SCREEN_SIZE_STR"s", s2 + i2);
    }
    while(s1[i1] != '\0') // print the remaining of s1
        i1 += printf("%."SCREEN_SIZE_STR"s", s1 + i1);
    while(s2[i2] != '\0') // 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();
于 2013-05-06T14:21:25.967 に答える
1

std::string を使用します。それを使用すると、 find()を使用して次の改行文字を見つけることができます。次に、substr()を使用して文字列を分割できます。

#include <iostream>
#include <string>

int main(){
    std::string str = "aasdasdasda\nasdasdasd\nasdasdasd";

    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
}
于 2013-05-06T13:57:22.867 に答える