C++字符串怎么样

ubi*_*con 7 c++ string

这是一个非常简单的问题,我觉得它很愚蠢,但我很紧张,我需要弄清楚:)

我只需要知道如何创建一个包含文本和其他变量的字符串.例如在Java中,我可以这样做:

String someString;

for(int i = 0; i>10; i++){

someString = ("this text has printed " + i + " times"); //how do I create this line in C++?

System.out.println(someString);

i++;

}
Run Code Online (Sandbox Code Playgroud)

编辑4:

好吧,Rahul G在下面的回答非常好,并且程序编译好了,但是当我运行它而不是获取我想要的文件名字符串时,我得到了一堆数字.例如:<< "frame " << i << " .jpg"创建:"013679000.jpg"而不是"frame 0.jpg"就像我想要的那样.有什么想法吗?

for(int i = 0; frames; i++)
{  
  frame = cvQueryFrame(capture); 
  std::string s = static_cast<std::ostringstream &>(std::ostringstream() << argv[1] <<  i << " .jpg").str(); 
  cvSaveImage(s.c_str(), frame);
} 
Run Code Online (Sandbox Code Playgroud)

rek*_*o_t 12

你可以使用stringstreams:

for (int i = 0; i < 10; i++) {
    std::ostringstream ss;
    ss << "this text has printed " << i << " times";
    std::cout << ss.str() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

  • 对于初学者问题,显示所需的包含是有帮助的:`<sstream>`,`<ostream>`和`<iostream>`. (3认同)

mis*_*tor 7

Java的:

int i = 5;
double d = 2.23606798;
String s = "Square root of "+i+" is "+d;
Run Code Online (Sandbox Code Playgroud)

C++:

int i = 5;
double d = 2.23606798;
std::ostringstream oss;
oss << "Square root of " << i << " is " << d;
std::string s = oss.str();
// If you need C style string...
char const *s0 = s.c_str();
Run Code Online (Sandbox Code Playgroud)

请注意,std::ostringstream该类位于<sstream>标题中.

编辑:

你的代码(更正):

for(int i = 0; frames; i++) { 
  frame = cvQueryFrame(capture);
  std::ostringstream oss;
  oss << "frame " << i << " .jpg";
  cvSaveImage(oss.str().c_str(), frame);
}
Run Code Online (Sandbox Code Playgroud)