c++ - 从 C++ 文件中读取整数和字符的混合

标签 c++ file getline token

我在用 C++ 读取文件时遇到了一些问题。我只能读取整数或字母。但是我无法同时读取两者,例如 10af、ff5a。我的流程如下:

int main(int argc, char *argv[]) {

if (argc < 2) {
    std::cerr << "You should provide a file name." << std::endl;
    return -1;
}

std::ifstream input_file(argv[1]);
if (!input_file) {
    std::cerr << "I can't read " << argv[1] << "." << std::endl;
    return -1;
}

std::string line;
for (int line_no = 1; std::getline(input_file, line); ++line_no) {
    //std::cout << line << std::endl;

         -----------
    }
       return 0;
 }

所以我想做的是,我允许用户指定他想要读取的输入文件,并且我正在使用 getline 获取每一行。我可以使用 token 的方法只读取整数或只读取字母。但我无法阅读两者的混合。如果我的输入文件是

2 1 89ab

8 2 16ff

阅读此文件的最佳方式是什么?

非常感谢您的帮助!

最佳答案

我会使用 std::stringstream ,并使用 std::hex 因为 89ab 和 16ff 看起来像十六进制数。

应该是这样的:

std::string line;
for (int line_no = 1; std::getline(input_file, line); ++line_no)
{
    std::stringstream ss(line);
    int a, b, c;

    ss >> a;
    ss >> b;
    ss >> std::hex >> c;
 }

您需要 #include <sstream>

关于c++ - 从 C++ 文件中读取整数和字符的混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5655797/

相关文章:

c++ - 代码块上的 Iostream 问题?

c++ - 通过在 C++ 中使用连接调用它来编辑字符串

java - 从 FileInputStream 获取 File 对象

c++ - 返回文本文件 C++ 上的一行

c++ - 二维最近邻搜索移动点

c++ - malloc 中的段错误 :

java - 如何删除临时文件?

c++ - C++ 中的动态分配不检查数组边界?

c++ - cin 和 getline 跳过输入

c++ - getline() 函数的问题