我有一个将整数值存储为自定义字符串类型的结构。
typedef char OneLine[MAX_LINE + 1];
所以我有一些实例,我希望将包含"12"的字符串转换为 C。
OneLine testString;
strcpy(testString, "12");
I'd like a way for me to convert testString to be "C"
我应该如何解决这个问题?
提前致谢。
我有一个将整数值存储为自定义字符串类型的结构。
typedef char OneLine[MAX_LINE + 1];
所以我有一些实例,我希望将包含"12"的字符串转换为 C。
OneLine testString;
strcpy(testString, "12");
I'd like a way for me to convert testString to be "C"
我应该如何解决这个问题?
提前致谢。
您可以使用sscanf
将“12”转换为整数 12。然后您可以使用sprintf
with %x
format 将整数 12 转换为“C”
可以使用 stringstreams 完成转换
#include <iostream>
#include <sstream>
#include <string>
#include <ios>
int main()
{
char const *str = "12";
std::istringstream iss( str );
int val;
if( !( iss >> val ) ) {
// handle error
}
std::ostringstream oss;
oss << std::hex << val;
std::cout << oss.str() << std::endl;
}
或者使用 C++11 稍微不那么冗长的方式
char const *str = "12";
auto val = std::stoi( str );
std::ostringstream oss;
oss << std::hex << val;
std::cout << oss.str() << std::endl;
首先,即使您要手动执行此操作,也不应将 char 数组用于字符串。使用std::[w]string
.
其次,您可以这样做std::[w][i|o]stringstream
:
istringstream iss("12");
int number;
iss >> number;
ostringstream oss;
oss << hex << number;
const string& hexNumber = oss.str();
// hexNumber now contains "C"