【发布时间】:2020-03-29 23:25:32
【问题描述】:
是否有人可能分解将字符串传递给函数的正确方法,该函数是否将其放入向量中,而另一个函数打印向量的内容?我确信有很多重复项,我(大部分)都看过它们,但仍然无法将其中任何一个应用于这个问题,或者至少在我看来是这样。
#include <cstdio>
#include <string>
#include <vector>
using namespace std;
static vector<string> added_messages;
static void addMessage(string message);
static void displayMessages();
int main()
{
string message = "Testing 1 2 3";
addMessage(message);
//printf("%s\n", message);
return 0;
}
void addMessage(string s)
{
added_messages.push_back(s);
//printf("%s\n", s);
}
void displayMessages()
{
if (added_messages.size() != 0) {
for (string i : added_messages)
printf("%s\n", i);
}
added_messages.clear();
}
它主要打印出垃圾:4÷/4⌠/
我是 C++ 的新手,并且来自 Java,我只是想不通。谢谢。
【问题讨论】:
-
%s的格式适用于char *,而不适用于string。使用i.c_str()将其作为char*获取 - 或使用其他方法打印它,例如cout << i; -
这里的主要问题是您使用的是 printf() 而不是
std::cout。你传递的字符串很好。 -
一路下来,所有的好答案!比我过去两天读过的其他 100 本书更清晰、更中肯。谢谢。
-
另外,而不是
for (string i : added_messages),让它成为for (string& i : added_messages)- 这样可以避免在枚举期间复制字符串。 -
if (added_messages.size() != 0)检查也是不必要的。