从int到string的转换
Conversion from int to string
我想在数组中输入带编号的对象。每个对象的元素都必须根据其在数组中的位置进行编号。我不明白为什么字符串索引在循环进行时转换时会保留以前的值。例如第一位是0,随着循环的进行,它变成010120123,依此类推。这是我对有问题的代码部分
stringstream convert;
int N;
int k;
srand ((long) 123456);
N=rand()%100+1;
NewTable=new Employee[N];
for(k=0;k<N;k++){
string name,surname,number="";
convert<<k;
number=convert.str();
cout<<number;
name="John_"+number;
surname="John_"+number;
NewTable[k].SetEmployee(name,surname,13*k,3*k);*/
}
我还认为,通过在循环开始时重新初始化数字字符串,可以解决问题,但事实并非如此。
您没有清除字符串流缓冲区,因此在每次迭代时都会向其添加内容
for (k = 0; k<N; k++){
string name, surname, number = "";
convert.str(""); // You should reset its contents
convert << k;
number = convert.str();
编辑:或者,正如James所指出的,如果涉及更多内容,每次重新创建字符串流可能会更好(此外,您只发布了一段代码):
for (k = 0; k<N; k++){
string name, surname, number = "";
std::ostringstream convert;
convert << k;
number = convert.str();
如果您希望在循环中每次都有一个原始的std::ostringstream
,那么只需在循环中每一次创建一个新的即可。尽管从理论上讲,你可以重置一切,让流回到原始状态,但这绝非小事,也不一定是100%确定的。最简单的就是:
for ( int k = 0; k < N; ++k ) {
std::ostringstream convert;
convert << k;
std::string number = convert.str();
// ...
}
(一般来说,最好不要定义变量,直到您需要它,并立即在定义中初始化它。)
相关文章:
- 使用char类型将decimal转换为string,将string转换为decimal
- C++:如何将 unix 时间的字符串转换为 *tm?(使用时间错误:"cannot convert 'String' to 'tm*' ")
- 将C++ std::string 转换为 UTF-16-LE 编码的字符串
- 将日语 wstring 转换为 std::string
- 如何将带有十六进制值的 std::string 转换为 std::vector<无符号字符>
- 如何在 std::string 和 Aws::String 之间进行转换?
- C++:将模板类型 char 转换为 std::string
- 无法<string>从"常量字符 []"转换为<类名>
- 将 std::string( "x3BxDEx7C" ) 转换为可读的十六进制字符串?
- 如何在 c++ 中将向量转换为<string>常量字符* const*?
- 无法从'const std::string [3]'转换为'std::string'
- 从 std::string 转换为 const 无符号整数
- 使用 .data() 将字符数组转换为 std::string 不会转换整个数组
- 为什么std::string没有(显式)const char*强制转换
- 将单个字符转换为 std::string 前缀 \x01
- C++ 模板函数无法将"std:string"转换为"double"作为回报
- 将 std::string 转换为 const char* 用于 printf 消耗
- Swig无法将python3的字节对象转换为std::string
- 将utf16宽std::wstring转换为utf8窄std::string以获得罕见字符时出现问题
- 将 std::string 转换为 const tchar*