這些都是運營商= String類重載: -
basic_string& operator=(const basic_string& str);
basic_string& operator=(basic_string&& str) noexcept(allocator_traits<Allocator>::propagate_on_container_move_assignment::value || allocator_traits<Allocator>::is_always_equal::value);
basic_string& operator=(const charT* s);
basic_string& operator=(charT c);
basic_string& operator=(initializer_list<charT>);
希望是有道理爲什麼編譯罰款。
現在來談談爲什麼沒有輸出的問題。我已經調整了一些代碼: -
#include <iostream>
int main() {
std::string foo;
foo = -1; // why is the compiler not complaining about this?
char ch = 65;
std::cout << "1" << std::endl;
std::cout << foo << std::endl;
std::cout << ch << std::endl;
//change ch to -1 ... ascii
ch = -1;
std::cout << ch << std::endl;
std::cout << "2" << std::endl;
}
你猜猜輸出是什麼嗎? Yup認爲按照ascii: -
1
A
2
這就是爲什麼你沒有-1的輸出。
編譯器 - MinGW - std = C++ 14 - 不知道爲什麼IDEONE在你的情況下弄糟了整個輸出流。
相關? http://stackoverflow.com/questions/32563648/stdstring-initialization-with-a-bool – CinCout
因爲沒有構造函數接受字符串容器的整數。要麼你讓你的實現或使用字符串編號。 – Joel
@Joel但爲什麼分配接受它? –