如何将整数附加到字符串
How do I append an integer to a string?
这是我昨天问题的后续。
我正在使用一个函数来下载文件:
void downloadFile(const char* url, const char* fname, const char* id ) {
//..
}
这被称为:
downloadFile("http://servera.com/file.txt", "/user/tmp/file.txt", "/home/user/Download/xxxx"(;
这适用于如图所示的固定id
,但我需要xxxx
替换为随机数:
srand(time(NULL));
int rdn = rand();
如果我尝试:
downloadFile("http://servera.com/file.txt", "/user/tmp/file.txt", "/home/user/Download/" + rdn);
我得到
error: invalid conversion from ‘int’ to ‘const char*’ [-fpermissive]
那么如何将rdn
附加到字符串"/home/user/Download/"
? 例如,如果rdm == 123456789
,我想将"/home/user/Download/123456789"
传递给函数。
正如
@leemes所说,您可以使用sprintf:
char str[100];
sprintf(str,"/home/user/Download/%d",rdn);
downloadFile("http://servera.com/file.txt", "/user/tmp/file.txt", str);
如果你使用 c++ 11,你可以
std::string download_location = "/home/user/Download/" + std::to_string(rdn)
downloadFile("http://servera.com/file.txt", "/user/tmp/file.txt", download_location.c_str());
更好的办法是取消 char* 并在任何地方使用字符串。使用 char* 引入错误太容易了。
或者,您也可以使用字符串流进行通用和高效的字符串连接/格式化。
#include <sstream>
...
stringstream download_location_stream;
download_location_stream << "/home/user/Download" << rdn;
downloadFile("http://servera.com/file.txt", "/user/tmp/file.txt",
download_location_stream.str().c_str());
相关文章:
- C 字符串返回字符串的整数/双精度/长整型值
- 尝试将字符串/字符转换为整数会产生意外结果
- 从字符串中提取整数并形成一个数组
- C ++中的StringStream有助于使用向量从字符串中提取逗号分隔的整数,而不是空格分隔的整数,为什么?
- 如何从C++中的格式化字符串派生整数?
- 如何使用C++将字符串中的字符转换为整数变量
- 向量值(字符串和整数)求和C++
- 如何从字符串C++读取多个整数
- 如何将整数字符串转换为整数的二维向量?
- 输入验证以筛选出字符、字符串和一系列整数
- 有没有办法在C++中将字符串和整数相乘?
- 使用 "stringstream " 将字符串转换为整数
- 将字符串转换为浮点数或整数,而无需使用内置函数(如 atoi 或 atof)
- C++字符串大小减去整数不是预期值,为什么?
- 使用字符串流读取整数并将它们相加
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- C++ runtime_exception字符串 + 整数
- C++:如果我们在字符串中添加一些整数,为什么它会从开头删除该数量的字符?(字符串 + 整数)
- 使用next_permutation函数后如何保存字符串/整数
- 使用fstream和sstream一起从文件中分离字符串/整数