std::string创建一个值
std::stringdiscard a value
有时我使用std::stringstream来解析文本文件,例如
8 9
100 1002 3.345
100 102 2.345
std::stringstream ss(file);
int unused1, unused2, first_useful_value;
ss >> unused1 >> unused2;
ss >> first_useful_value >> ...
现在假设第一行,即
8 9
对我来说都是无用的价值观,我只需要抛弃它们。我可能认为整行都是无用的或我可能认为这些值中的一些是无用的。
我的问题是:有没有任何方法可以丢弃给定类型的值,而不必在堆栈上声明无用的变量(要么浪费,要么可读性较差)?
您可以使用std::stringstream::ignore
和delimeter n
跳过第一行,如下所示:
ss.ignore(std::numeric_limits<std::streamsize>::max(), 'n');
现场演示
或者用作分隔符空间,或者将您的值分隔开来,一次丢弃一个:
ss.ignore(std::numeric_limits<std::streamsize>::max(), ' '); // delimiter is space
ss.ignore(std::numeric_limits<std::streamsize>::max(), ','); // delimeter is comma
现场演示
相关文章:
- 如果我注释掉换行符,为什么'string'会成为一个不合格的变量
- 我正在将一个 std::string 传递给一个 boost 函数,该函数对该类型进行常量引用,但该值发生了变化
- 从 C 字符串构造 std::string 与从另一个 std::string 构造 std::string 不一致
- 将(临时的?)std::string传递给使用它来构造一个接受副本的对象的函数的最佳方法是什么?
- cv::String 和 std::string:何时使用哪一个以及必须同时使用两者?
- 为什么一个表达式中的 std::string 连接给出的结果与逐个字符不同的结果?
- 实现一个想要模拟 std::string 但在将其push_back向量时卡住的类
- std::string_view 的优点 当传递给另一个采用 std::string 的函数时
- 将 std::string 作为参数从一个 DLL 传递到另一个 DLL 引发访问冲突错误
- 为什么在这个分解的 std::string dtor 中有一个锁定的 xadd 指令?
- 返回一个 std::string,转换为 char*
- C 使用默认限制的迭代器创建一个空的std :: String
- 字符串构造函数将两个字符* 放入另一个 std::string 在 C++14 中有效,但不适用于 C++17
- 为什么string.empty()在字符串包含一个值时评估为true
- "vector<string>"作为函数参数传递,我得到一个错误
- 我收到一个" conversion from ‘std::string (*)[50]’ to non-scalar type ‘std::string’ requested"错误,似乎无法修复它
- 将 C++ std::string 中的字符/字符序列替换为另一个字符序列
- 用一个字符制作 std::string 的最佳方法是什么?
- std::move在将std::string移动到另一个线程时出错
- 将一个char和一个int组合成一个string