相关疑难解决方法(0)

检查一个字符串是否是另一个字符串的前缀

我有两个字符串,我想比较一下:StringString:.是否有一个库函数在传递这两个字符串时会返回true,但是对于say StringOtherString

确切地说,我想知道一个字符串是否是另一个字符串的前缀.

c++ prefix string-comparison

44
推荐指数
8
解决办法
4万
查看次数

为什么使用string :: iterator而不是index?

可能重复:
为什么使用迭代器而不是数组索引?

string::iterator it;
for (it = str.begin(); it < str.end(); it++) 
    cout << *it;
cout << endl;
Run Code Online (Sandbox Code Playgroud)

为什么不:

for (int i = 0; i < str.size(); i++)
    cout << str[i];
cout << endl;
Run Code Online (Sandbox Code Playgroud)

似乎string :: iterator也没有提供范围检查.我们为什么要使用string::iterator而不是索引?

谢谢.

c++ string iterator

38
推荐指数
3
解决办法
5万
查看次数

如何从std :: vector <string>构造一个std :: string?

我想建立std::string一个std::vector<std::string>.

我可以使用std::stringsteam,但想象有一个更短的方式:

std::string string_from_vector(const std::vector<std::string> &pieces) {
  std::stringstream ss;

  for(std::vector<std::string>::const_iterator itr = pieces.begin();
      itr != pieces.end();
      ++itr) {
    ss << *itr;
  }

  return ss.str();
}
Run Code Online (Sandbox Code Playgroud)

我怎么可能这样做?

c++ stl string-concatenation stringstream stdstring

24
推荐指数
5
解决办法
4万
查看次数

如何检查字符串是否以.txt结尾

我正在学习基本的C++,现在我从用户那里得到了一个字符串,我想检查他们是否输入了整个文件名(包括.txt).我有字符串,但如何检查字符串是否以".txt"结尾?

string fileName;

cout << "Enter filename: \n";
cin >> fileName;

string txt = fileName.Right(4);
Run Code Online (Sandbox Code Playgroud)

Right(int)方法仅适用于CString,因此上述代码不起作用.如果可能的话,我想使用常规字符串.有任何想法吗?

c++ string

22
推荐指数
4
解决办法
3万
查看次数

C++ std :: string是一个容器吗?

对于你们中的一些人来说这可能是个简单的问题.但我想知道a std::string是否是一个容器.容器我的意思是容器,例如std::vector,std::liststd::deque.

由于std::basic_string<>接受除积分字符之外的其他类型,但也通过使用字符数组进行优化.我不清楚它属于哪个类别.

这将编译:

#include <string>
#include <iostream>

int main() {
    std::basic_string<int> int_str;
    int_str.push_back(14);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是通过添加这一行:

std::cout << int_str << std::endl;
Run Code Online (Sandbox Code Playgroud)

它不会.因此,通过这些事实,我可以得出结论,std :: basic_string不适用于除字符之外的其他类型.

这可能是一个奇怪的问题.我需要知道这个的原因是因为我正在研究一个框架而我仍然无法确定"字符串"会落在哪个类别中.

c++ containers stdstring

7
推荐指数
1
解决办法
3119
查看次数

C++在for循环中使用预先计算的限制器

在PHP这样的脚本语言中有这样的for循环会是一个非常糟糕的主意:

string s("ABCDEFG");
int i;
for( i = 0; i < s.length(); i ++ )
{
   cout << s[ i ];
}
Run Code Online (Sandbox Code Playgroud)

这是一个例子,我不是在构建这样的程序.(对于那些觉得他们必须告诉我为什么这段代码< 在这里插入不好的东西 >>的人

如果将此C++示例转换为类似的PHP脚本,则会在每个循环周期计算字符串的长度.这将导致现实脚本中的巨大性能损失.

我认为这同样适用于C++程序,但是当我看一下教程,几个开源库和其他代码时,我发现循环的限制器没有预先计算.

  • 我应该预先计算字符串的长度s吗?
  • 为什么限制器不会总是预先算出?(在教程和示例中看到了这一点)
  • 编译器是否进行了某种优化?

c++

6
推荐指数
1
解决办法
758
查看次数

c ++内置的效率

我是C++的新手,拥有更多的C经验.

我正在编写一个将使用字符串类的程序,并开始怀疑"length()"方法的效率.

我意识到虽然我对这个问题没有一个好的答案,所以想知道这个和类似问题的答案是否存在于某个地方.虽然我能够确定自己代码的运行时间,但在提供代码方面我有点不知所措,所以我发现我无法准确判断程序的效率.

是否有c ++文档(在线或"man"格式)包含有关所提供代码的运行时的信息?

编辑:我一般对此感兴趣,而不仅仅是string :: length.

c++ documentation performance

5
推荐指数
2
解决办法
558
查看次数