从 txt 文件中查找和打印数据
Find and Print data from txt file
我有一个关于字符串类的错误消息。 根据我通过尝试解决此问题发现的示例,我相信我正确地使用了该类。
下面是代码:
int main()
{
string allData, gridNum;
ifstream gridData;
gridData.open ("/Users/Neo/Documents/UNi/Year_3/Grid Data Analysis Program/gridData.txt");
if (gridData.is_open())
{
while ( getline (gridData, allData) )
{
size_t gridNum = allData.find("Grid Receiver 34");
string receiverX = allData.substr (gridNum, 40);
cout << receiverX << endl;
}
gridData.close();
}
else cout << "Unable to open file..." << endl;
return 0;
}
控制台中的错误...
libc++abi.dylib: terminating with uncaught exception of type std::out_of_range: basic_string
(lldb)
我正在尝试从文本文件读取字符串变量。我只想在"网格接收器 34"字之后阅读 40 个字符,然后打印新字符串的内容。
while ( getline (gridData, allData) )
{
size_t gridNum = allData.find("Grid Receiver 34");
string receiverX = allData.substr (gridNum, 40);
cout << receiverX << endl;
}
在这里,您逐行读取文件,搜索"网格接收器 34",但是,如果未找到该字符串,则std::string::find
将返回std::string::npos
。以此作为substr
的论据会给你带来麻烦。您应该在使用前检查它是否找到它:
while ( getline (gridData, allData) )
{
size_t gridNum = allData.find("Grid Receiver 34");
if(gridNum != std::string::npos)
{
string receiverX = allData.substr (gridNum, 40);
cout << receiverX << endl;
}
}
另外,停止使用 using namespace std;
.
您可能会在
找不到搜索字符串的行上收到异常。
您只想尝试在找到字符串的行上提取子字符串。
按如下方式修改代码:
int main()
{
string allData, gridNum;
ifstream gridData;
gridData.open ("/Users/Neo/Documents/UNi/Year_3/Grid Data Analysis Program/gridData.txt");
if (gridData.is_open())
{
while ( getline (gridData, allData) )
{
size_t gridNum = allData.find("Grid Receiver 34");
if (gridNum != std::string::npos) // add this condition :-)
{
string receiverX = allData.substr (gridNum, 40);
cout << receiverX << endl;
}
}
gridData.close();
}
else cout << "Unable to open file..." << endl;
return 0;
}
相关文章:
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 动态分配的聊天数组打印缺失的数据和空
- 访问和打印元组中的数据,并使用 C++14 使用模板函数显示数据
- C++ 打印包含数据结构的数组
- 从模板创建通用打印函数,以打印基元数据类型变量的值
- 在打印方法中,难以在二进制树中打印数据
- 面对迭代矢量<矢量<string>>和打印数据的问题
- 使用访问器以两种格式打印数据
- 如何在我从文件中读取的结构中打印数据
- 从 txt 文件中查找和打印数据
- 使用函数和数组从文件中读取和打印数据
- 通过C++从标准输出中的一些打印数据中提取特定值
- 以十六进制打印数据结构值
- 以正确的模式打印数据
- C++:打印数据,printf
- for_each打印数据不正确
- 在链表节点中递归打印数据,但使用多个前向链接C++(包括Pic)
- 在矢量中打印数据
- 在对话框中打印数据
- 打印数据QTextDocument和QPainter