解析并将字符串转换为数字

时间:2015-03-18 21:07:16

标签: c++

我有一个输入文件,我用基本myFile >> variable读入,因为我知道格式和格式总是正确的。我正在阅读的文件格式为instruction <num> <num>,要使>>正常工作,我会以字符串形式阅读所有内容。如果我有3个变量,一个接收每一行,我怎么能转换字符串&lt; 1&gt; (例如)进入int 1?我知道字符串的第一个和最后一个字符是需要删除的括号,然后我可以转换为int,但我是C ++的新手,并希望了解这方面的最佳方法(找到并删除&lt;&gt ;,然后转换为int)

4 个答案:

答案 0 :(得分:1)

使用stringstream

#include <string>
#include <sstream>
#include <iostream>

int main() {
    std::string str = "<1>";
    int value;
    std::stringstream ss(str);
    char c;

    ss >> c >> value >> c;

    std::cout << value;
}

答案 1 :(得分:0)

首先要获得中间角色,你可以char myChar = inputString.at(1);。然后你可以int myInt = (int)myChar;

答案 2 :(得分:0)

即使您删除<>个字符,您仍然使用>>将文件内容导入字符串,因此您仍需要将其转换为int。如果你只有1个值,你可以按照Nicholas Callahan在前一个答案中所写的内容,但是如果你想要读取多个字符作为int,你就没有选择,只能进行演员。

答案 3 :(得分:0)

您也可以使用sscanf

#include <cstdio>
#include <iostream>
#include <string>

int main()
{
    std::string str = "<1234>";
    int value;
    sscanf(str.c_str(), "<%d>", &value);
    std::cout << value << std::endl;
}