2015-05-23 97 views
1

我想在字符ascii代碼執行一些計算後,預先追加一個字符到字符串,但做(somenumber+'0') + s不起作用,我不明白爲什麼。更改ascii代碼和preappend字符在C++中的字符串

我要的是 「ahello」 使用的( '0' + 49)

這是我曾嘗試ASCII表示了答案:

std::string s = "hello"; 
s.insert(0, std::to_string('a')); 
std::cout << s << std::endl; // 97hello 

s = "hello"; 
s += 'a'; 
std::cout << s << std::endl; // helloa 

s = "hello"; 
s = 'a' + s; 
std::cout << s << std::endl; // ahello 

//s = (49+'0') + s; 
//std::cout << s << std::endl; 
+0

To_string實際上覆羽'a'作爲字符串,即「97」。在C++中,'a'是97,而不是「a」。 – Tim3880

回答

3

是否要追加的字符(97)的ASCII碼int或你要追加ASCII表示( 'A')?

在後一種情況下,您可以直接使用s.insert(0, "a")

如果你想之前轉換ASCII碼整型,你可以使用的std :: string fill constructor,如已經指出的Steephen:

// fills the string with n consecutive copies of character c. 
std::string(size_t n, char c); 

// so you could do this to get a string "f": 
std::string(1, 'a'+5); 
+0

ascii表示 – nevermind

+0

其他答案應該通過回答您的問題現在:) – Mangostaniko

1

這將解決這一問題:

s.insert(0, string(1,1+'a')); 

O/p

bhello

s.insert(0, string(1,0+'a')); 

O/P

ahello

+0

雖然我不想那麼做...我需要用'0'+某些數字來做點什麼,並將其附加到前面 – nevermind

+0

@nevermind嘗試新的答案 – Steephen

0

嘗試

s.insert(0, string(1,49+'a'));