我认为我遇到了一个简单的问题,但我无法在任何地方找到解决方案。
我有一个包含很多单词的字符串向量。说第一个元素有 5 字母,但我只想访问第一个 3 字母。我该怎么做?!
std::string test_word = "hou";
std::vector<std::string> words = {"house", "apple", "dog", "tree", ...}
if (test_word == /*(words[0].begin(), words[0].begin()+3)*/) {
...
}
编写它的正确语法方式是什么?
编辑:解决方案
std::string test_word = "hou";
std::vector<std::string> words = {"house", "apple", "dog", "tree", ...}
for (int i = 0; i < words.size(); i++) {
for (int j = 1; j <= words[i].size(); j++) {
if (words[i].compare(0,j, test_word) == 0) {
...
}
}
}
答案 0 :(得分:3)
if( words[0].compare(0,3, test_word) == 0)
应避免进行不必要的内存分配。
答案 1 :(得分:2)
我只想访问第一个..
使用std::string::substr
是一种方便的方法,但它可能会导致堆分配。因此,如果您需要表现或想要完全到目标并且只访问这些元素,那么您应该使用std::equal
中的algorithm
:< / p>
std::equal(words[0].begin(), words[0].begin()+3,
"text which is not shorter than 3 elements")
还有compare
成员函数,正如putnampp所示。
答案 2 :(得分:1)
如果您对std::string
特别感兴趣,可以使用substr
if (test_word == words[0].substr(0, 3))
评论中提及的@DanielJour,您也可以使用std::equal
if (std::equal(begin(test_word), begin(test_word) + 3, begin(words[0]))
答案 3 :(得分:1)
&#34;说第一个元素有5个字母,但我只想访问前3个字母。我该怎么办?!&#34;
您可以应用std::string::substr()
功能来引用前3个字母:
import socket
from server import userlist #<-- error here
class Server():
def __init__(self,port):