-1

ソリューション1111 のおかげで...

vector<std::string> split_at_line(string str, int lines) {
 vector<std::string> nine_ln_strs;
 string temp;
 stringstream ss;
 int i = 0;
 while(i != str.length()) {
     ss << str.at(i);
     if(i == lines) {
        lines += lines;
        getline(ss,temp);
        nine_ln_strs.push_back(temp);
        ss.clear();
        temp.clear();
     }
     if(i+lines > str.length()) {
        getline(ss,temp);
        nine_ln_strs.push_back(temp);
        ss.clear();
        temp.clear();
        break;
     }
     i++;
 }
 return nine_ln_strs;

}

===========================================

今日、多次元配列の操作方法を練習して学ぼうとしていたところ、問題が発生しました。N行ごとに、文字列を複数の文字列に分割する方法がわかりません。Web を検索しましたが、空白とトークンの例しかないようです。とにかくやりたいことはありますか?

例:

#include <iostream>
#include <string>
#include <sstream>
#include <iomanip>
using namespace std;

const int five = 5;
int test[][five] = {

{ 0, 0, 1, 0, 0 },
{ 0, 1, 1, 0, 0 },
{ 0, 2, 1, 0, 0 }
};

int main() {
stringstream result;
int a = sizeof test / sizeof ( test[0] );
cout << a << endl;
int b = 5;
for ( int i = 0; i < a; i++ ) {
    for ( int j = 0, inc = 0 ; j < b; j++, inc++ ) {
        if(inc == 2) {
            result << hex << setfill ('0') << setw(4) << (int)test[i][j];
        } else {
            result << hex << setfill ('0') << setw(2) << (int)test[i][j];
        }
    }
}

string s = result.str();
cout << s << endl;

// split the string into segments of every 000000000000 and store them into a new string each time, or another array

   int z;       // hold
   cin >> z;

   return 0;
}
4

1 に答える 1

0

より良い方法があるかもしれませんが、これはうまくいくはずです

 std::vector<std::string> split_at_line(const std::string& str, unsigned lines) {
     std::vector<std::string> nine_ln_strs;
     std::istringstream ss(str);
     std::string temp, t2;

     while(ss) { //whilst there is still data
         //get nine lines
         for(unsigned i=0; i!=lines && std::getline(ss, t2); ++i) {          
             temp+=t2;
         }
         //add block to container
         nine_ln_strs.push_back(temp));
     }
     //return container
     return nine_ln_strs;
 }

PS: C 配列はあまり良くありませんが、可能な場合はコンテナーを使用してください。fiveまた、 defined toという定数を作成して5もあまり役に立ちません。ここで変数を使用するのは、後で変更できるようにするためです。5 の値を 5 に変更すると、6それは奇妙になります。test_szより良い名前になります。

于 2012-05-12T21:23:44.100 に答える