所以说如果我在文本文件中有这一行。
AarI/CACCTGCNNNN'NNNN/'NNNNNNNNGCAGGTG//
我想要的是将这一行读入一个字符串,直到出现forwardlash,然后开始将下一组字符读入另一个字符串..所以在这个例子中我将有3个字符串包含
string1 = "AarI"
string2 = "CACCTGCNNNN'NNNN"
string3 = "'NNNNNNNNGCAGGTG"
知道如何解决这个问题吗?
答案 0 :(得分:1)
istream::getline()
的分隔字符为“/” - 请参阅:http://www.cplusplus.com/reference/istream/istream/getline/
不是最好或最安全的,可能是更简单的方法。
答案 1 :(得分:1)
使用sstream
。下面的代码显示了如何拆分字符串的示例。
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
vector<string> split(string str, char delimiter);
int main(int argc, char **argv) {
string DNAstr = "AarI/CACCTGCNNNN'NNNN/'NNNNNNNNGCAGGTG//";
vector<string> splittedlines = split(DNAstr, '/');
for(int i = 0; i < splittedlines.size(); ++i)
cout <<""<<splittedlines[i] << " \n";
return 0;
}
vector<string> split(string str, char delimiter) {
vector<string> buffer;
stringstream ss(str);
string tok;
while(getline(ss, tok, delimiter)) {
buffer.push_back(tok);
}
return buffer;
}