整数値をカスタム文字列型として格納する構造体があります。
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
して%x
整数12を「C」に変換できます。
変換は文字列ストリームを使用して行うことができます
#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"