我想知道什么是最好的方法,从一个写std::stringstream成vector<int>.
以下是以下内容的示例stringstream:
"31 #00 532 53 803 33 534 23 37"
这是我得到的:
int buffer = 0;
vector<int> analogueReadings;
stringstream output;
while(output >> buffer)
analogueReadings.push_back(buffer);
Run Code Online (Sandbox Code Playgroud)
然而,似乎发生了什么,它首先读取,然后它到达#00并返回,0因为它不是一个数字.
理想情况下,我想要的是,它到达a #然后只是跳过所有字符直到下一个空格.这可能是旗帜或其他什么?
谢谢.
_wtoi当无法转换输入,因此输入不是整数时,返回零。但同时输入可以为零。这是确定输入是否错误或为零的方法吗?
嗨,我是C ++的新手,正在尝试做一个作业,我们从txt文件中读取许多数据,格式为
surname,initial,number1,number2
Run Code Online (Sandbox Code Playgroud)
在有人建议将2个值读取为字符串然后使用stoi()或atoi()转换为int之前,我曾寻求帮助。这很好用,除非我需要使用此参数“ -std = c ++ 11”进行编译,否则它将返回错误。在我自己的计算机上这不是问题,它将处理“ -std = c ++ 11”,但是对我来说不幸的是,我必须在其上显示程序的计算机没有此选项。
如果还有另一种方法可以将字符串转换为不使用stoi或atoi的int?
到目前为止,这是我的代码。
while (getline(inputFile, line))
{
stringstream linestream(line);
getline(linestream, Surname, ',');
getline(linestream, Initial, ',');
getline(linestream, strnum1, ',');
getline(linestream, strnum2, ',');
number1 = stoi(strnum1);
number2 = stoi(strnum2);
dosomethingwith(Surname, Initial, number1, number2);
}
Run Code Online (Sandbox Code Playgroud) 在C++中.C++中Java的Integer.parseInt()和String.valueOf()有哪些替代方法.
我试图重复读取整数,以及非整数的标记,以读取和处理它们作为字符串.我认为以下内容可行:
string s;
int x;
while(1) {
if (cin >> x) // try reading as int
cout << "read int: " << x << endl;
else { // try reading as string
cin.clear();
if (cin >> s)
cout << "read string: " << s << endl;
else
break; // eof
}
}
Run Code Online (Sandbox Code Playgroud)
但是,对于输入(在换行时使用换行符)
1 2 a
Run Code Online (Sandbox Code Playgroud)
它给出了输出
read int: 1
read int: 2
Run Code Online (Sandbox Code Playgroud)
似乎清除流的状态与之前不完全相同,实际上cin >> s失败了.为什么会这样,我怎样才能实现我想要的行为?
为了澄清,我无法将字符串解析为int,因为我尚未"学习"它.
我有一个包含的c_str [51,53].我想将这些对分成两个整数.它们位于c_str中,因为我从输入文件中读取它们.
必须有一种简单的方法来解析它们.我在考虑使用这个.at功能:但我相信我已经成功了.此外,它不起作用,因为它输出:
pair: 0x7ffffcfc2998
pair: 0x7ffffcfc2998
etc
Run Code Online (Sandbox Code Playgroud)
string pairstring = buffertm.c_str();
stringstream pair1, pair2;
int pairint1, pairint2;
pair1 << pairstring.at(1) << pairstring.at(2);
cout << "pair: " << pair1;
pair1 >> pairint1;
pair2 << pairstring.at(4) << pairstring.at(5);
//cout << "pair: " << pair2;
pair2 >> pairint2;
Run Code Online (Sandbox Code Playgroud)
有更好的方法吗?
我正在工作的程序传递了3个命令行参数,所有这些参数都应该是整数.提供的骨架程序有:
int main(char *argv[]){
...
}
Run Code Online (Sandbox Code Playgroud)
我所提供的只是尝试在数组的每个位置(0,1和2)中为项设置一个整数,但它不会编译,因为它试图将char转换为整数.我确信有一个简单的解决办法,但我似乎无法弄明白.
所以我有一个编辑值的函数,但我在main中查看值,看它输出1309668848并在每次运行程序时更改.(这在预处理器中没有发生).我一直在努力解决这个问题,并决定来这里寻求建议.
这是功能.
void GetDahInt() {
std::string NewValueS;
getline(std::cin, NewValueS);
NewValue = (int)NewValueS.c_str();
}
Run Code Online (Sandbox Code Playgroud) 我想创建一个程序,读取包含两个数字和一个运算符的字符串,并打印出结果.它不断显示算术运算符的错误.例如,我如何将两个字符串一起添加?
int main()
{
string number1;
string number2;
string operation;
string answer;
cout << "Enter numbers with respective operations";
cout << "number 1";
cin >> number1;
cout << "number2";
cin >> number2;
cout << "operation";
cin >> operation;
if (operation == "+")
{
answer = number1 + number2;
cout << "the sum is " << answer << endl;
}
else if (operation == "-")
{
answer = number1 - number2;
cout << "the difference is " << answer << endl; …Run Code Online (Sandbox Code Playgroud) c++ ×10
string ×3
int ×2
atoi ×1
casting ×1
cin ×1
java ×1
lexical-cast ×1
parsing ×1
stringstream ×1
visual-c++ ×1