Ответ 1
Потому что %s
указывает a char*
, а не a std::string
. Используйте s.c_str()
или лучше использовать, iostreams:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s("bla");
std::cout << s << "\n";
}
Я пытаюсь напечатать строку следующим образом:
int main(){
string s("bla");
printf("%s \n", s);
.......
}
но все, что я получаю, это случайная бред.
Не могли бы вы объяснить, почему?
Потому что %s
указывает a char*
, а не a std::string
. Используйте s.c_str()
или лучше использовать, iostreams:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s("bla");
std::cout << s << "\n";
}
Вам нужно использовать c_str, чтобы получить c-строку, эквивалентную строковому контенту, поскольку printf
не знает, как печатать строковый объект.
string s("bla");
printf("%s \n", s.c_str());
Вместо этого вы можете просто сделать:
string s("bla");
std::cout<<s;
Мне удалось распечатать строку, используя "cout", когда я переключился с:
#include <string.h>
к
#include <string>
Я бы хотел понять, почему это важно...
Почему бы вам просто не использовать
char s[]="bla";