为什么我在尝试从istringstream读取数据时出错
Why am I getting an error trying to read data from an istringstream?
我有以下C++代码:
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <iomanip>
#include <cstring>
using namespace std;
int main() {
istringstream inSS;
string title;
string col1;
string col2;
string val;
int numCommas;
vector<string> stringData();
vector<int> intData();
cout << "Enter a title for the data:" << endl;
getline(cin, title);
cout << "You entered: " << title << endl << endl;
cout << "Enter the column 1 header:" << endl;
getline(cin, col1);
cout << "You entered: " << col1 << endl << endl;
cout << "Enter the column 2 header:" << endl;
getline(cin, col2);
cout << "You entered: " << col2 << endl << endl;
while (1) {
cout << "Enter a data point (-1 to stop input):" << endl;
getline(cin, val);
if(strcmp(val.c_str(), "-1") == 0) {
break;
}
inSS >> stringData >> intData;
cout << "Data string: " << stringData << endl;
cout << "Data integer: " << intData << endl;
}
return 0;
}
有问题的错误:
main.cpp: In function 'int main()': main.cpp:46:9: error: no match for 'operator>>' (operand types are 'std::istringstream {aka std::cxx11::basic_istringstream<char>}' and 'std::vector<std::cxx11::basic_string<char> >()')
inSS >> stringData >> intData;
~~~^~~~~~~~~~~
这个错误是什么意思?我该如何修复它?
错误与多种因素有关。首先,让我们看看这一行:
inSS >> stringData >> intData;
在这里,您正在尝试从istringstream
读取到vector<string>
和vector<int>
。然而,您不能使用流提取运算符从流中读取vector
-没有根本原因,只是标准不允许这样做。您需要一次读取一个元素的数据,这可能需要重写大量代码。
这里还有另一个更微妙的问题。这些线路并不像你想象的那样:
vector<string> stringData();
vector<int> intData();
这些行看起来像是使用默认构造函数声明了类型为vector<string>
和vector<int>
的名为stringData
和intData
的变量。不幸的是,不管你信不信由你,C++都将这些解释为函数原型。例如,第一个是一个名为stringData
的函数的原型,该函数不带参数(因此括号之间为空),并返回一个vector<string>
。要解决此问题,请删除括号。只需写入
vector<string> stringData;
vector<int> intData;
总结:
- 您需要从根本上对代码进行一些更改,因为您无法从
istringstream
读取到vector
。这就需要进行逻辑更新 - 您需要删除括号来修复前面的两个声明
相关文章:
- 如何在ros2中从rosbag2读取数据
- OpenCV 和从 OutputArrays 或 (Mat) 读取数据
- 使用C++从磁卡读卡器MT188读取数据
- HDF5 简单读取数据集失败
- 嵌套结构,从由空行分隔的文件中读取数据
- 不要从输入队列套接字读取数据
- 从文件中读取数据,操作员>>
- 如何从excel文件中读取数据并存储到变量中?
- C++:从文件中读取x y数据会产生无限循环吗
- 无法通过FT232RL读取数据
- 如何从QNetworkReply读取数据?
- C++ 逐行从文件(包含空格)读取数据
- 通过显示一行星号来创建条形图,该条形图将读取数据的输入文件
- 我们可以从 TXT 文件中读取数据并使用 C 和 C++ 将其保存到 SQL 数据库吗?
- 从多个 tcp 连接读取数据
- 从文本文件中读取数据并删除所有换行符空格,并在 C++ 控制台中显示
- Qt TCP服务器不从客户端读取数据
- 累积从 C++11 中的文件中读取数据的整数
- 从 txt 文件中读取数据的最简单方法
- 从 txt 文件中读取数据的 Getline