相关疑难解决方法(0)

将长字符串分成多个c ++

我有一个从第三方收到的字符串.此字符串实际上是文本文件中的文本,它可能包含用于行终止的UNIX LF或Windows CRLF.如何将其分解为多个字符串而忽略空行?我打算做以下事情,但不确定是否有更好的方法.我需要做的就是逐行阅读.这里的矢量只是一个方便,我可以避免它. *不幸的是我无法访问实际文件.我只收到字符串对象*

string textLine;
vector<string> tokens;

size_t pos = 0;
while( true ) {
    size_t nextPos = textLine.find( pos, '\n\r' );
    if( nextPos == textLine.npos )
        break;
    tokens.push_back( string( textLine.substr( pos, nextPos - pos ) ) );
    pos = nextPos + 1;
}
Run Code Online (Sandbox Code Playgroud)

c++ string line

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

C++拆分字符串

我试图使用空格作为分隔符拆分字符串.我想将每个标记存储在数组或向量中.

我试过了.

    string tempInput;
    cin >> tempInput;
    string input[5];

    stringstream ss(tempInput); // Insert the string into a stream
    int i=0;
    while (ss >> tempInput){
        input[i] = tempInput;
        i++;
    }
Run Code Online (Sandbox Code Playgroud)

问题是,如果我输入"这是一个测试",该数组似乎只存储输入[0] ="这个".它不包含输入[2]到输入[4]的值.

我也试过使用矢量但结果相同.

c++ string split

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

C++,如何标记这个字符串?

如果用空格分隔,我怎么能得到像"Ac milan"和"Real Madryt"这样的字符串?

这是我的尝试:

string linia = "Ac milan ; Real Madryt ; 0 ; 2";
str = new char [linia.size()+1];
strcpy(str, linia.c_str());
sscanf(str, "%s ; %s ; %d ; %d", a, b, &c, &d);
Run Code Online (Sandbox Code Playgroud)

但它不起作用; 我有:a= Ac; b = (null); c=0; d=2;

c++ scanf

4
推荐指数
2
解决办法
9684
查看次数

是否有更好的方法在C++中执行URL模式匹配而不是迭代?

我有一个模式匹配例程,它根据用于请求命令的URL从std :: map查找值.URL映射表填充了以下值:

// Assume this->commands_ is defined elsewhere as std::map<std::string, int>
// Providing a number of URL examples to give an idea of the structure of
// the URLs
this->commands_["/session"] = 1;
this->commands_["/session/:sessionid/url"] = 2;
this->commands_["/session/:sessionid/back"] = 3;
this->commands_["/session/:sessionid/forward"] = 4;
this->commands_["/session/:sessionid/element"] = 5;
this->commands_["/session/:sessionid/element/:id/text"] = 6;
this->commands_["/session/:sessionid/element/:id/value"] = 7;
Run Code Online (Sandbox Code Playgroud)

每个URL模式中的标记(由前面的':'指定)被查找例程的调用中的实际值替换(例如"/session/1234-8a0f/element/5bed-6789/text"),但是我将需要保留的命名参数.上例中的命名标记列表并非详尽无遗,并且上面列出的位置可能还有其他命名标记.请注意,令牌值是十六进制编码的数字.

目前,我正在迭代映射的键,用正则表达式值替换替换标记,并使用std :: tr1正则表达式类对请求的值执行正则表达式匹配,将匹配的标记名称和值捕获到向量中.代码在功能上与此等效(代码比通常为清晰起见而更冗长):

// Assume "using namespace std;" has been declared,
// and appropriate headers #included.
int Server::LookupCommand(const string& uri,
                          vector<string>* names,
                          vector<string>* values) {
    int …
Run Code Online (Sandbox Code Playgroud)

c++ regex tr1 pattern-matching

4
推荐指数
1
解决办法
809
查看次数

用于C++的split函数

是否有类似于Java的C++拆分类型函数?我知道无视,但我不太了解它,以及它对我的情况如何有效.

我的意见是:

{
  item = ball
  book = lord of the rings
  movie = star wars
}
Run Code Online (Sandbox Code Playgroud)

给出的输入是<attribute>= <value>并且我必须将两个存储在不同的字符串或整数中(取决于值,例如,如果它是一个数字,则使用整数).

c++ string templates split ignore

4
推荐指数
1
解决办法
8517
查看次数

如何在C++中将空格分隔的字符串拆分为多个字符串?

有点我的代码如下所示:

static int myfunc(const string& stringInput)
{
    string word;
    stringstream ss;

    ss << stringInput;
    while(ss >> word)
    {
        ++counters[word];
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

这里的目的是获取一个输入字符串(由空格''分隔)到字符串变量中word,但这里的代码似乎有很多开销 - 将输入字符串转换为字符串流并从字符串流读取到目标字符串.

是否有更优雅的方式来实现相同的目的?

c++ string stream

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

拆分std :: string并插入std :: set

根据C++聊天室的精彩故事要求,有什么方法可以分解文件(在我的情况下包含一个大约100行的字符串,每行大约10个单词)并插入所有这些单词进入std :: set?

c++

4
推荐指数
2
解决办法
1万
查看次数

使用2个分隔符"+"和" - "在C++中拆分字符串

我试图用C++中的2个分隔符'+'和' - '分割一个字符串,使用字符串查找分隔符...

任何人都可以给我一个...

运用

str.find(分隔符)

例如:

A + B-C + d

需要输出:a b c d

提前致谢

c c++ string find delimiter

4
推荐指数
1
解决办法
6336
查看次数

如何在C++中将格式化字符串HH:MM:SS转换为秒

我想将以HH:MM:SS格式化的字符串时间戳转换为仅秒,然后将其与数字进行比较.我用Java编写了我的代码的主要版本,但是我分别向Scanner询问,而不是有string时间.我对C++库不是很熟悉,因为我是一个Java人.想知道我怎么能用C++做到这一点?

尽量简短,String s = "1:01:01";而且String s2= "3600";我需要知道if (s>s2)

import java.util.*;

public class Test {
    public static void main(String[] args) {
        Scanner console = new Scanner(System.in);

        int hours;
        int mins;
        int secs;

        System.out.println("Enter Hours: ");
        hours = console.nextInt();

        System.out.println("Enter Minutes: ");
        mins = console.nextInt();

        System.out.println("Enter Seconds: ");
        secs = console.nextInt();

        int showSecs = (hours * 3600) + (mins * 60) + secs;

        System.out.println(hours + ":" + mins + ":" + secs + " in …
Run Code Online (Sandbox Code Playgroud)

c++ datetime

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

如何在C++中迭代句子的单词?

我的输入是"Hello World",我的目标输出是"olleH dlroW".

所以我的想法是将句子放入变量然后循环句子中的单词,反转它们中的每一个,最后将它们连接成一个新变量.

我的问题是:如何迭代句子的单词?

#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;

string reverseword(string word)
{
    string rword;
    int size = word.length();
    while (size >= 0)
    {
        rword+= word[size];
        size = size -1;
    }   
    return rword;
}

int main()
{ 
    string sentence;
    cout<<"Enter the word/sentence to be reversed: ";
    cin >> sentence;
    string rsentence;
    // for every word in the sentence do
    {
        rword = reverseword(word);
        rsentence = rsentence + " " + rword; 
    }
    cout<<rword;
    return 0; …
Run Code Online (Sandbox Code Playgroud)

c++ string loops

4
推荐指数
1
解决办法
531
查看次数

标签 统计

c++ ×10

string ×6

split ×2

c ×1

datetime ×1

delimiter ×1

find ×1

ignore ×1

line ×1

loops ×1

pattern-matching ×1

regex ×1

scanf ×1

stream ×1

templates ×1

tr1 ×1