c++ std:string append char 的奇怪有关问题
c++ std:string append char 的奇怪问题
一个应该比较简单的问题,但我一直没有搞明白
以上代码我期望值为
26char/a.png
26char/b.png
.
.
.
以此类推,但运行结果却很奇怪,
结果为
26char/aa.png
26char/bb.png
.
.
为什么一个变成两个,
将代码换成这样才得到正确的值

------解决思路----------------------
参考std::string.append() 的说明
http://zh.cppreference.com/w/cpp/string/basic_string/append
------解决思路----------------------
这个样子:
string (1) string& append (const string& str);
substring (2) string& append (const string& str, size_t subpos, size_t sublen);
c-string (3) string& append (const char* s);
buffer (4) string& append (const char* s, size_t n);
fill (5) string& append (size_t n, char c);
range (6) template <class InputIterator> string& append (InputIterator first, InputIterator last);
initializer list(7) string& append (initializer_list<char> il);
(3) c-string
Appends a copy of the string formed by the null-terminated character sequence (C-string) pointed by s.
http://www.cplusplus.com/reference/string/string/append/
就是你一个char结尾是没有null-terminated \0的,所以你append出来的结果应该是未知的,我在我这VS2010试了就变乱码了,可以进那个连接看append的几个重载形式,或者使用楼上几位的
一个应该比较简单的问题,但我一直没有搞明白
int a=97, z=122;
vector<std::string> imageVector;
for (int i=a; i<=z; i++) {
char c = (char)i;
std::string imageName = "26char/";
imageName.append(&c);
imageName.append(".png");
imageVector.push_back(imageName);
}
以上代码我期望值为
26char/a.png
26char/b.png
.
.
.
以此类推,但运行结果却很奇怪,
结果为
26char/aa.png
26char/bb.png
.
.
为什么一个变成两个,
将代码换成这样才得到正确的值
mageName.append(&c, 1);
------解决思路----------------------
参考std::string.append() 的说明
http://zh.cppreference.com/w/cpp/string/basic_string/append
------解决思路----------------------
这个样子:
string (1) string& append (const string& str);
substring (2) string& append (const string& str, size_t subpos, size_t sublen);
c-string (3) string& append (const char* s);
buffer (4) string& append (const char* s, size_t n);
fill (5) string& append (size_t n, char c);
range (6) template <class InputIterator> string& append (InputIterator first, InputIterator last);
initializer list(7) string& append (initializer_list<char> il);
(3) c-string
Appends a copy of the string formed by the null-terminated character sequence (C-string) pointed by s.
http://www.cplusplus.com/reference/string/string/append/
就是你一个char结尾是没有null-terminated \0的,所以你append出来的结果应该是未知的,我在我这VS2010试了就变乱码了,可以进那个连接看append的几个重载形式,或者使用楼上几位的