لماذا لا يمكنني فهرسة ناقل STD :: في النافذة المباشرة؟

StackOverflow https://stackoverflow.com/questions/2179724

سؤال

لذلك ، لدي ناقل

 std::vector<std::string> lines. 

أملأ هذا المتجه ، ويمكنني الوصول إليه مثل

 std::string temp = lines[0];

ومع ذلك ، في النافذة المباشرة ، كلاهما

 lines[0] - error:overloaded operator not found

و

 lines.at(0) - error:symbol is ambiguous

لا تعمل على الإطلاق. هل هناك خدعة لاستخدام النافذة الفورية مع C ++. أنا في الغالب قادم من خلفية C# ، حيث يعمل كل شيء بشكل جيد (ولدي Intellisense في النافذة المباشرة). لم أكن أتوقع أن تكون C ++ رائعة ، لكنني اعتقدت أنها ستعمل على الأشياء إلى جانب INTS. هل يمكن لأي شخص أن يخبرني بما أفعله خطأ؟ شكرًا.

تحرير: يجب أن أكون واضحًا ، لا شيء يعمل حقًا في النافذة المباشرة ، وهذا مجرد مثال مبسط

تحرير: أنا في وضع التصحيح

هل كانت مفيدة؟

المحلول

لا تدعم Windows الفورية والمشاهدة المشغلين المحملين. هناك بعض الدعم هناك لطباعة الحاويات القياسية ككل بطريقة معقولة (انظر ، على سبيل المثال ، http://www.virtualdub.org/blog/pivot/entry.php؟id=120) ، لكن هذا لا يمتد إلى القدرة على الاستخدام operator[] عليهم.

نأمل أن يتم تحسين هذا في المراجعات اللاحقة لتصحيح الأخطاء ، ولكن في الوقت الحالي ، أن ننظر إلى عنصر المتجه ، حاول lines._Myfirst[i].

(_Myfirst, ، في المكتبات القياسية التي تأتي مع VC ++ ، يحدث أن يكون متغير العضو في أ std::vector هذا يشير إلى العنصر الأول من التسلسل. لذلك هذا هو مجرد فحص المتجه كما لو كان أي كائن آخر. للعمل في هذا الأمر ، كان علي أن أنظر إلى الرؤوس ... ليست مريحة للغاية ، ولكن نأمل أن يساعدك ذلك. ربما يمكنك القيام بشيء مماثل مع الحاويات الأخرى ، ولكن عليك أن تنظر في الرؤوس لمعرفة كيف.)

(بالمناسبة ، إذا كنت تعمل في C#، فربما يبدو أن C ++ تصحيح الأخطاء جانب CLR.)

نصائح أخرى

في إصدارات Visual Studio الخاصة بـ NowaDay (على سبيل المثال 2013/2015) ، لم يعد متغير عضو العضو المتجه موجودًا لمتغير ناقل STD ::. استخدم _c_begin بدلاً من ذلك - يعني للمثال المحدد استخدام eg lines._c_begin [i].

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top