对于每个循环,仅采用数组C ++的第一个字符串

093

我正在使用C ++ 14并尝试为每个循环创建一个,以打印出数组的每个字符串。我得到错误:

user.cpp:12:34:错误:类型'char'的表达式对类型'std :: string&{aka std :: basic_string&}'的引用的初始化无效

for(std :: string&str:*(u->收藏夹)){

当我在foreach循环中将std :: string更改为auto时,它可以工作,但是str成为favs数组中第一个字符串的单个字符。我的代码如下:

用户名

class User{
    private:

    public:
        User(){
            favs = new std::string[5]{std::string("Hello"), std::string("how"), std::string("are"), std::string("you"), std::string("?")};
        }

        ~User(){
            delete[] favs;
        }

        std::string lName;
        std::string fName;
        int age;
        std::string *favs;
};

user.cpp

#include <iostream>
#include "user.h"

void create(User *u){   
    std::cout << "Please enter first name: ";
    std::cin >> u->fName;
    std::cout << "Please enter last name: ";
    std::cin >> u->lName;
    std::cout << "Please enter age: ";
    std::cin >> u->age;

    for(std::string &str : *(u->favs)){
        std::cout << str << std::endl;
    }

    std::cout << "\n";
}

main.cpp

#include <iostream>
#include <string>
#include "user.h"       

int main(){
    std::string command;
    User user;
    std::cout << "bp1: " << user.favs->size() << std::endl;
    while(true){
        std::cout << "Please enter a command (Create, Update, View, Favorites, or Quit): ";
        std::cin >> command;
        if(command == "Create"){
            create(&user);
        } else if(command == "Update"){
            update(&user);
        } else if(command == "View"){
            view(&user);
        } else if(command == "Favorites"){
            //favorites(&user);
        } else if(command == "Quit"){
            break;
        } else std::cout << "Please input a valid command.\n";
    }
}
普雷托里亚人

取消引用时,u->favs您会得到一个std::string&基于的范围,然后开始一次遍历该string字符。这就是为什么当您auto从第一个字符串中看到单个字符时,以及当您尝试将该字符绑定到astring&时会出现编译错误的原因。

您无法获得基于的区域来使用指针类型,因为它无法知道指针指向多少个对象。如果对代码进行以下更改以声明favs为静态大小的数组,则代码将起作用。

将您的班级定义更改为

using namespace std::string_literals;  // allows use of operator""s (user defined literal)
class User
{
public:
    User()
    : favs{{"Hello"s, "how"s, "are"s, "you"s, "?"s}}  // use operator""s
    {}

    // no need for a destructor definition

    std::string lName;
    std::string fName;
    int age;
    std::array<std::string, 5> favs;  // statically sized array
};

如果您需要一个动态大小的数组,请std::vector<std::string>改用它,您的循环仍将起作用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++ fstream仅保存字符串的第一个字符

来自分类Dev

返回字符串中每个单词的第一个字符

来自分类Dev

Pinvoke字符串中仅传递第一个字符

来自分类Dev

如果每个字符串中的第一个字符相同,则从数组中的每个字符串中删除第一个字符

来自分类Dev

查找数组字符串中的第一个字符

来自分类Dev

无法获得字符串数组中的第一个字符

来自分类Dev

关联数组返回字符串的第一个字符

来自分类Dev

字符串小写的第一个字符-C#

来自分类Dev

字符串小写的第一个字符-C#

来自分类Dev

C字符串中缺少第一个字符

来自分类Dev

NSShowNonLocalizedStrings仅适用于第一个字符串?

来自分类Dev

nmcli命令仅使用ssid的第一个字符串?

来自分类Dev

在数组中找到第一个字符串匹配?

来自分类Dev

C ++ fprintf只打印第一个字符串

来自分类Dev

C ++ fprintf只打印第一个字符串

来自分类Dev

C#如何交换字符串中的第一个字符与最后一个字符

来自分类Dev

在javascript中查看数组中每个字符串的第一个字母

来自分类Dev

JavaScript:提取数组中每个字符串的第一个字母?

来自分类Dev

从字符串数组android studio中删除第一个字符串

来自分类Dev

PHP将字符串中每个第一个字符的位置放入数组

来自分类Dev

为什么字符串连接仅消耗第一个字符串?

来自分类Dev

如何仅删除非数字字符串的第一个字符?(MFC,C ++)

来自分类Dev

将字符串文字的第一个字符分配给char数组将分配整个字符串文字

来自分类Dev

获取字符串中每个单词的第一个字符

来自分类Dev

如何获取字符串中每个单词的第一个字符?

来自分类Dev

PHP返回的字符串带有小写的每个单词的第一个字符

来自分类Dev

仅将字符串的第一个字符替换为str_replace?

来自分类Dev

Vim-模式仅匹配文字字符串的第一个字符

来自分类Dev

如何使输入字符串按原样使用,而不是仅使用第一个字符?

Related 相关文章

  1. 1

    C ++ fstream仅保存字符串的第一个字符

  2. 2

    返回字符串中每个单词的第一个字符

  3. 3

    Pinvoke字符串中仅传递第一个字符

  4. 4

    如果每个字符串中的第一个字符相同,则从数组中的每个字符串中删除第一个字符

  5. 5

    查找数组字符串中的第一个字符

  6. 6

    无法获得字符串数组中的第一个字符

  7. 7

    关联数组返回字符串的第一个字符

  8. 8

    字符串小写的第一个字符-C#

  9. 9

    字符串小写的第一个字符-C#

  10. 10

    C字符串中缺少第一个字符

  11. 11

    NSShowNonLocalizedStrings仅适用于第一个字符串?

  12. 12

    nmcli命令仅使用ssid的第一个字符串?

  13. 13

    在数组中找到第一个字符串匹配?

  14. 14

    C ++ fprintf只打印第一个字符串

  15. 15

    C ++ fprintf只打印第一个字符串

  16. 16

    C#如何交换字符串中的第一个字符与最后一个字符

  17. 17

    在javascript中查看数组中每个字符串的第一个字母

  18. 18

    JavaScript:提取数组中每个字符串的第一个字母?

  19. 19

    从字符串数组android studio中删除第一个字符串

  20. 20

    PHP将字符串中每个第一个字符的位置放入数组

  21. 21

    为什么字符串连接仅消耗第一个字符串?

  22. 22

    如何仅删除非数字字符串的第一个字符?(MFC,C ++)

  23. 23

    将字符串文字的第一个字符分配给char数组将分配整个字符串文字

  24. 24

    获取字符串中每个单词的第一个字符

  25. 25

    如何获取字符串中每个单词的第一个字符?

  26. 26

    PHP返回的字符串带有小写的每个单词的第一个字符

  27. 27

    仅将字符串的第一个字符替换为str_replace?

  28. 28

    Vim-模式仅匹配文字字符串的第一个字符

  29. 29

    如何使输入字符串按原样使用,而不是仅使用第一个字符?

热门标签

归档