包含c++中字符串的文本文件中的字符串
String in a text file containing a string in C++
这是我代码中的一部分
string word;
cin >> word;
string keyword;
while (file >> keyword && keyword != word){}
在文件中搜索一个单词,如果它找到这个单词(关键字),然后从那里开始一个字符串。现在工作得很好。我的问题是,当行
"Julia","2 Om.","KA","1 Om. 4:2"
如果我输入单词Julia,我找不到它并将其用于我的目的(仅供参考,我正在计算它)。如果我搜索"Julia","2",因为这是空格的位置。
我想知道如何换行
while (file >> keyword && keyword != word){}
所以我可以看到当文本/字符串包含该字符串,因为目前它只找到并接受它,如果我完全输入整个字符串。
编辑:我也发现到目前为止只有strstr, strtok, strcmp。但这些更适合printf而不是cout。
您可以使用std::string中的方法,如find
。
#include <string>
#include <iostream>
// ...
std::string keyword;
std::string word;
getline(file, keyword);
do
{
std::cin >> word;
}
while (keyword.find(word) == std::string::npos);
问题是您正在提取字符串,默认情况下将提取到下一个空格。在第一次迭代中,keyword
等于"Julia","2
。如果您想提取以逗号分隔的所有内容,我建议使用std::getline
与,
作为分隔符:
while (std::getline(file, keyword, ','))
这将查找所有带引号的字符串。现在您可以使用std::string::find
来确定输入的word
是否在引号内的字符串中找到:
while (std::getline(file, keyword, ',') &&
keyword.find(word) == std::string::npos)
现在,它将循环遍历每个带引号的字符串,直到包含word
的字符串。
使用istream的这个方法来获取整行而不是单个"word":
http://www.cplusplus.com/reference/istream/istream/getline/然后使用strstr,查找字符串(如Julia)在字符串(文件行)中的位置:
http://www.cplusplus.com/reference/cstring/strstr/相关文章:
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 有没有办法从非C/C++文件中读取C++原始字符串文字的内容
- 如何打开并写入一个名称取自C++中字符串的文件
- 如何从二进制文件中读取字符串
- 如何在 c++ 中使用 getline 从文件中读取字符串?
- 将字符串与文件上的数据进行比较
- 用户输入字符串的文件附加问题..C++
- 如何从文件中读取两个字符串和数字数组,并将它们存储在对象向量中
- 如何使字符串出现在编译的二进制可执行文件的开头?
- 使用文件内容作为硬编码字符串
- 将文件复制到自定义位置,存在字符串转换问题
- 将二进制字符串/文件内容从 c++ 传递到节点 js
- 在字符串.h文件中调用函数而不带对象
- 将带有引号和逗号的字符串文件读入字符串数组
- 如何从字符串/文件中分离字符和整数
- 将字符串文件存储到动态数组中
- 如何用C++将字符串文件Txt解析成数组
- 如何用Boost::Spirit解析复杂的字符串文件
- 如何从C语言的第二行读取字符串文件
- 一个很好的性能替代PHP-字符串/文件操作