2

我有一个将整数值存储为自定义字符串类型的结构。

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"

我应该如何解决这个问题?

提前致谢。

4

3 回答 3

4

您可以使用sscanf将“12”转换为整数 12。然后您可以使用sprintfwith %xformat 将整数 12 转换为“C”

于 2012-10-22T22:58:14.610 回答
1

可以使用 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;
于 2012-10-22T23:03:04.157 回答
0

首先,即使您要手动执行此操作,也不应将 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"
于 2012-10-22T23:13:26.373 回答