从文本文件中读取行的行数到字符串

时间:2015-03-09 21:31:57

标签: c++ string text ifstream

所以说如果我在文本文件中有这一行。

AarI/CACCTGCNNNN'NNNN/'NNNNNNNNGCAGGTG//

我想要的是将这一行读入一个字符串,直到出现forwardlash,然后开始将下一组字符读入另一个字符串..所以在这个例子中我将有3个字符串包含

string1 =  "AarI"
string2 = "CACCTGCNNNN'NNNN"
string3 = "'NNNNNNNNGCAGGTG"

知道如何解决这个问题吗?

2 个答案:

答案 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;
}