三个整数到 1 个带空格的字符串;
Posted
技术标签:
【中文标题】三个整数到 1 个带空格的字符串;【英文标题】:Three Integers into 1 string with spacebars; 【发布时间】:2015-03-27 10:15:37 【问题描述】:我有这样的输入:
1581 303 1127 Bravo
我想把它变成这样的字符串:
string a="1581 303 1127";
string b="Bravo";
我该怎么做?
【问题讨论】:
您是将 1581、303、1127 保存在 int 中还是仅作为字符串保存? 到目前为止您尝试过什么?那是怎么工作的?那怎么行不通?输入来自哪里? 前3个是整数,最后一个是字符串 “空格键”不是字符,它是用来写空格的键。 【参考方案1】:基于你将前三个作为 int 和最后一个作为 string 的事实,这样做。
int i1, i2, i3;
//Take input in three integers
sprintf(a, "%d %d %d", i1, i2, i3);
【讨论】:
你可以对字符串 b 使用 sprintf 但这次使用 %s 您不能将sprintf
与C++ 标准库类std::string
一起使用。
在那之后 std::string s(charArry);
这是一种 C 方法。是的,它可以在 C++ 中使用,但已被弃用。【参考方案2】:
只需将它们读为字符串并将它们放在一起即可。
std::string x1, x2, x3;
std::cin >> x1 >> x2 >> x3;
std::string a = x1 + " " + x2 + " " + x3;
std::string b;
std::cin >> b;
【讨论】:
【参考方案3】:简单的 c++ 风格方法是使用 std::to_string
string += " "
string += std::to_string(int_value);
这会在字符串末尾添加一个“int”值。
但是您是否考虑过使用字符串流代替?
#include <sstream>
std::stringstream sstream;
sstream << int_1 << " " << int_2 << std::endl;
如果你想把它转换成一个好的旧字符串:
string = sstream.str();
【讨论】:
【参考方案4】:你可以这样做:
getline(cin, a); // read the numbers followed by a space after each number and press enter
getline(cin, b); // read the string
cout << a << endl << b; // output the string with numbers
// first then the string with the word 'Bravo'
【讨论】:
【参考方案5】:标准 C++ 中不依赖于读取值的一种方式是
#include <string>
#include <sstream>
int main()
int i1 = 1581;
int i2 = 303;
int i3 = 1127;
std::ostringstream ostr;
ostr << i1 << ' ' << i2 << ' ' << i3 << ' ' << "Bravo";
// possible to stream anything we want to the string stream
std::string our_string = ostr.str(); // get our string
std::cout << our_string << '\n'; // print it out
【讨论】:
以上是关于三个整数到 1 个带空格的字符串;的主要内容,如果未能解决你的问题,请参考以下文章
输入三个整数,按由小到大的顺序输出,然后将程序改为:输入三个字符串,按由小 到大顺序输出。 改错!!