C++ 比较文件中的字符串行
我有一个我读过的文件,我想读每一行,就像它是一个字符串一样,比较每一行以找到特定的关键字,如果我找到了这些关键字,就把这些关键字中的所有内容都取出来,并从中生成一个新的字符串。有可能有多行具有相同的关键字,所以我想创建单独的字符串 我现在有一些看起来很难看的代码,放在这里会很尴尬,有人能告诉我怎么做的正确方向吗 如果你愿意的话,我可以把我的代码放在这里,但我得解释很多 美国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国 GU ACA UUG CGC GAU GGG CCU CGA GAC CCG GGU UUA AAG UAG GU A UUA CAU UGC GCG M GGC CUC GAG ACC CGG GU UAA AGG UGA UGG M AAA UUU GGG CCC AGA GCU CCG GGU AGC GCG UU A CAU UGA 这将是我文本文件的一部分。我想找到“M”,然后找到以下实例:1)UAA、2)UAG或3)UGA。把每一根都做成一根单独的线,这样我就可以比较它们的长度了。我尝试使用赋值运算符,但每次都会打印出相同的字符串 我想我要做的就是找到“M”的任何实例,当我找到时,我想把整行变成一个字符串,这样我就可以比较字符串了C++ 比较文件中的字符串行,c++,C++,我有一个我读过的文件,我想读每一行,就像它是一个字符串一样,比较每一行以找到特定的关键字,如果我找到了这些关键字,就把这些关键字中的所有内容都取出来,并从中生成一个新的字符串。有可能有多行具有相同的关键字,所以我想创建单独的字符串 我现在有一些看起来很难看的代码,放在这里会很尴尬,有人能告诉我怎么做的正确方向吗 如果你愿意的话,我可以把我的代码放在这里,但我得解释很多 美国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合酋长国联合
ifstream code_File ("example.txt"); // open text file.
if (code_File.is_open()) {
while (code_File.good()) {
getline(code_File,line); //get the contents of file
cout << line << endl; // output contents of file on screen.
found = line.find_first_of('M', 0); // Finding start code
if (found != string::npos) {
code_Assign.assign(line, int(found), 100); //assign the line to code_Assign and print out string from where I found the start code 'M'.
cout << endl << "code_Assign: " << code_Assign << endl << endl;
ifstream代码_文件(“example.txt”);//打开文本文件。
if(代码\u文件.is\u open()){
while(code_File.good()){
getline(code_File,line);//获取文件的内容
cout对于grep
或sed
或awk
标准Posix实用程序来说,这似乎是一项很好的任务
如果你想在一个程序中(更快),考虑使用标准技术,例如
,对我来说,你到底想做什么还不清楚。
要读取一行并将其放入单个字符串中:使用std::getline
要在另一个字符串中查找固定字符串,请使用std::search
;了解更多信息
复杂的模式,如果您有
std::search
将返回一个迭代器和两个
迭代器可用于构造新字符串。regex
解决方案
可以“捕获”,因此您可以访问中间字符串
直接(或不直接;很大程度上取决于模式的复杂程度,以及
regex
解决方案在您要捕获的字符串为
但是,如果没有更多信息,它是
很难说得更多
试着精确地说明你的问题,我想你会发现这一点
有助于找到解决方案。我想这与Xcode没有任何关系,只是我在使用Xcode。我不会再使用它了。@user1046825:恐怕您应该显示代码或所需输入、输出对的精确示例。“我想找到m,然后找到:1)UAA、2)UAG或3)UGA的实例。
”没有任何意义。同样地,“使用赋值运算符”没有添加任何信息。因此,我希望从那里找到“M”的第一个实例。但是,我找到了,它会找到所有实例,并且字符串代码_分配将被替换为它找到的新字符串。好的,首先,使用上面的阻塞部分。假设这是我的文本文件,我将如何将每一行提取为字符串?具体如何提取我使用std::getline吗?我现在正在使用它,它会读取整个文件的内容…@user1046825std::getline(source,line)
应该一直读到下一个'\n'
。这个文件有什么有趣的地方吗?(Unix行结尾,而你在Windows机器上---尽管这对我来说一直都很有用。)